#!/bin/bash
# Tomcat多机部署脚本
# 注：此脚本只用于***开发/测试服务器的Tomcat1部署

# 常量
SERVER_INTRANET_IP="127.0.0.1"
SERVER1_INTRANET_IP="172.17.0.1"
SERVER2_INTRANET_IP="172.18.68.207"

TOMCAT1_PORT="11003"
TOMCAT1_CATALINA_HOME="/opt/naoyihui_tomcat_user"
TOMCAT1_DEPLOY_DIRECTORY="$TOMCAT1_CATALINA_HOME/webapps/"

TOMCAT2_PORT="11003"
TOMCAT2_CATALINA_HOME="/opt/naoyihui_tomcat_user"
TOMCAT2_DEPLOY_DIRECTORY="$TOMCAT2_CATALINA_HOME/webapps/"

NGINX_CONFIG_DIRECTORY="/opt/nginx"
NGINX_CONFIG_FILE_MEDTION="$NGINX_CONFIG_DIRECTORY/conf/sites-available/dev.medtion.com.conf"
NGINX_CONFIG_FILE_BRAINMED="$NGINX_CONFIG_DIRECTORY/conf/sites-available/dev.brainmed.com.conf"
TAB="    "
NGINX_UPSTREAM_TOMCAT1="server $SERVER1_INTRANET_IP:$TOMCAT1_PORT;"
NGINX_UPSTREAM_TOMCAT2="server $SERVER2_INTRANET_IP:$TOMCAT2_PORT;"


# 0.防止误操作产生两个 Tomcat 都下线，如 Tomcat2 下线脚本退出
NGINX_CHECK_TOMCAT2_ONLINE=$(sudo cat $NGINX_CONFIG_FILE_BRAINMED | grep "$TAB$NGINX_UPSTREAM_TOMCAT2")
if [ "$NGINX_CHECK_TOMCAT2_ONLINE" != "$TAB$NGINX_UPSTREAM_TOMCAT2" ]; then
    echo "Tomcat2 未上线，不可部署 Tomcat1 ，请手动恢复***（Tomcat）环境，恢复成功再使用脚本部署。"
    exit 1
fi

# 1.开发人员上传需要部署的文件到***开发/测试服务器的Tomcat1，此处只做确认，不做校验
read -r -p "确认需要部署的文件已上传到***开发/测试服务器的Tomcat1？ [y/N] " input1
if [[ "${input1,,}" =~ ^(yes|y)$ ]]
then
    echo ""
else
    echo "请上传好文件后，再次运行该脚本！"
    exit 0
fi

# 2.修改***开发/测试服务器的Tomcat1的所有者，修复因上传造成的所有者错乱
echo "正在修改***开发/测试服务器的Tomcat1的所有者......"
#sudo chown -R tomcat:tomcat $TOMCAT1_DEPLOY_DIRECTORY
sudo chown -R ecs-user:root $TOMCAT1_DEPLOY_DIRECTORY
echo "修改***开发/测试服务器的Tomcat1的所有者成功！"
echo ""

# 3.修改Nginx配置文件，将***开发/测试服务器的Tomcat1暂时下线
echo "正在将***开发/测试服务器的Tomcat1下线......"
sudo sed -i -e "s/$TAB$NGINX_UPSTREAM_TOMCAT1/$TAB#$NGINX_UPSTREAM_TOMCAT1/g" $NGINX_CONFIG_FILE_MEDTION
sudo sed -i -e "s/$TAB$NGINX_UPSTREAM_TOMCAT1/$TAB#$NGINX_UPSTREAM_TOMCAT1/g" $NGINX_CONFIG_FILE_BRAINMED
sudo docker exec -i nginx nginx -s reload 
echo "***开发/测试服务器的Tomcat1下线成功！"
echo ""

# # 4.重启***开发/测试服务器的Tomcat1
# echo "正在将***开发/测试服务器的Tomcat1重启......"
# sudo $TOMCAT1_BIN_DIRECTORY/shutdown.sh
# echo ""
# echo "等待10秒后，强杀***开发/测试服务器的Tomcat1进程！"
# sleep 10
# sudo ps aux | grep $TOMCAT1_CATALINA_HOME | grep -v grep | awk '{print "sudo kill -9 " $2}' | sh
# echo ""
# sudo -u tomcat $TOMCAT1_BIN_DIRECTORY/startup.sh
# echo "***开发/测试服务器的Tomcat1重启成功！"
# echo ""

sudo docker restart naoyihui_tomcat_user

# 5.开发人员检查***开发/测试服务器的Tomcat1的日志，确认Tomcat成功启动，并且没有错误，此处只做确认，不做校验
echo "请检查***开发/测试服务器的Tomcat1的日志！"
while true
do
    read -r -p "确认Tomcat成功启动，并且没有错误？ [y/N] " input2
    case $input2 in
        [yY][eE][sS]|[yY])
            break
            ;;
        *)
            ;;
    esac
done
echo ""

# 6.修改Nginx配置文件，将***开发/测试服务器的Tomcat1上线
echo "正在将***开发/测试服务器的Tomcat1上线......"
sudo sed -i -e "s/$TAB#$NGINX_UPSTREAM_TOMCAT1/$TAB$NGINX_UPSTREAM_TOMCAT1/g" $NGINX_CONFIG_FILE_MEDTION
sudo sed -i -e "s/$TAB#$NGINX_UPSTREAM_TOMCAT1/$TAB$NGINX_UPSTREAM_TOMCAT1/g" $NGINX_CONFIG_FILE_BRAINMED
sudo docker exec -i nginx nginx -s reload
echo "***开发/测试服务器的Tomcat1上线成功！"

